#pragma once
#include "stdafx.h"
#include "Scheduler.h"
#include "Operator.h"
#include "IStreamInput.h"

#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>
#include "IStreamInput.h"
#include "IStreamOutput.h"
#include "JsonSchema.h"
#include "QueryIntermediateRepresentation.h"
class JsonStreamServer:private boost::noncopyable
{
private:
	
	 
	static JsonStreamServer* jsonStreamServer;
	JsonStreamServer(void);
	~JsonStreamServer(void);
	 
 

	//void initialScheduler();
public:
	static JsonStreamServer* getInstance(void);
	void initial();
	void registerStream(boost::shared_ptr<IStreamInput> streamInput);
	void registerQuery(boost::shared_ptr<QueryIntermediateRepresentation> queryIntermediateRepresentation,boost::shared_ptr<IStreamOutput> streamOutput);
	
	void execute();
	
};

